#!/bin/bash
# 数据库备份脚本
# author    : guyadong
# date      : 2019/08/20

sh_folder="$(dirname $(readlink -f $0))"

# 脚本初始化
. "$sh_folder/constant"
[ ! -f "$sh_folder/status" ] && "没有找到 status文件，不能执行备份" && exit 255
. "$sh_folder/status"

# 显示命令行参数说明
usage() {
    echo "facelog 数据库备份脚本"
    echo "备份 facelog，fdevmgr 服务的数据库到指定的文件夹"
    echo "分别生成名为 facelog_bak-yyyy-MM-dd-HH-MM-SS.sql,fdevmgr_bak-yyyy-MM-dd-HH-MM-SS.sql的备份文件"
    echo "yyyy-MM-dd-HH-MM-SS 为备份时间戳"
    echo "用法:"
    echo "  backup_db.sh [OPTION]... [FOLDER]"
    echo "FOLDER: 备份文件保存的文件夹，默认为当前路径下 bak 文件夹"
    echo "参数说明:"
    echo "    --facelog 只备份 facelog 服务的数据库,不指定默认备份所有服务数据库"
    echo "    --fdevmgr 只备份 fdevmgr 服务的数据库,不指定默认备份所有服务数据库"
    echo "    -h --help 输出帮助信息"
    exit 255
}

bak_folder="./bak"

task_list=
# 解析命令行参数
while [ $# -ge 1 ] ; do
    case "$1" in
        -h|--help) usage;;
        --facelog)
            task_list="$task_list facelog";
            shift 1;;
        --fdevmgr)
            task_list="$task_list fdevmgr";
            shift 1;;
        *) 
            [ ! -d "$1" ] && echo "无效文件夹 $1." ; exit 255
            bak_folder="$1"
            shift 1;;
    esac
done
[ -z "$task_list" ] && task_list="facelog fdevmgr"
SUFFIX=$(date +%Y-%m-%d-%H-%M-%S)
FACELOG_BAK="$bak_folder/facelog_bak-$SUFFIX.sql"
FDEVMGR_BAK="$bak_folder/fdevmgr_bak-$SUFFIX.sql"

mkdir -p "$bak_folder" || exit_on

if [[ "$task_list" == *facelog* ]]
then
    rm -f "$FACELOG_BAK" || exit_on_error    
    export MYSQL_PWD=$database_jdbc_password
    mysqldump -h$database_jdbc_host -P$database_jdbc_port -u$database_jdbc_username $database_jdbc_schema > "$FACELOG_BAK" || exit 255
    echo "备份成功:$FACELOG_BAK"
    
fi

if [[ "$task_list" == *fdevmgr* ]]
then
    rm -f "$FDEVMGR_BAK" || exit_on_error
    export MYSQL_PWD=$fdevmgr_db_password
    mysqldump -h$fdevmgr_db_host -P$fdevmgr_db_port -u$fdevmgr_db_username $fdevmgr_db_schema > "$FDEVMGR_BAK" || exit 255
    echo "备份成功:$FDEVMGR_BAK"
fi